// Array.prototype._flat = function () {
//   let result = [];
//   for (let item of this) {
//     if (Array.isArray(item)) {
//       result.push(...item._flat());
//     } else {
//       result.push(item);
//     }
//   }
//   return result;
// };
//传入参数 决定扁平化的阶数
Array.prototype._flat = function (n) {
  let result = [];
  let num = n;
  for (let item of this) {
    // 如果是数组
    if (Array.isArray(item)) {
      n--;
      //   没有扁平化的空间 直接推入
      if (n < 0) {
        result.push(item);
      }
      // 继续扁平化 并将n传入 决定这一个数组中的扁平化
      else {
        result.push(...item._flat(n));
      }
    }
    // 不是数组直接推入
    else {
      result.push(item);
    }
    // 每次循环 重置n 为传入的参数 因为每一项都需要扁平化 需要进行判断
    n = num;
  }
  return result;
};
let arr = [1, 2, [3, 4], [5, 6, [7, 8]]];
let res = arr._flat(1);
console.log(res); // [ 1, 2, 3, 4, 5, 6, [ 7, 8 ] ]
 